import cv2

# 读取图像
img = cv2.imread('photo4.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 创建SURF对象
try:
    # 检查是否为较新的 OpenCV 版本
    surf = cv2.SIFT_create()
    print("使用 SIFT 替代 SURF，因为 SURF 可能受专利限制")
except AttributeError:
    # 旧版本 OpenCV 可以使用 xfeatures2d
    surf = cv2.xfeatures2d.SURF_create(400)

# 检测关键点并计算描述符
kp, des = surf.detectAndCompute(gray, None)

# 在图像上绘制关键点
img = cv2.drawKeypoints(gray, kp, img)

# 显示结果
cv2.imshow('SURF Features', img)
cv2.waitKey(0)
cv2.destroyAllWindows()